package ar.edu.unq.dodb.morphia.model;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import com.google.code.morphia.annotations.Entity;
import com.google.code.morphia.annotations.Property;
import com.google.code.morphia.annotations.Reference;

@Entity(value = "peliculas")
public class Pelicula extends Entidad implements Nombrable {

	@Property
	private String nombre;

	@Reference(concreteClass = Director.class, ignoreMissing = true)
	private Director director;

	@Reference(concreteClass = LinkedList.class)
	private List<Actor> actores = new ArrayList<Actor>();

	public Pelicula() {
	}

	public Pelicula(final String nombre) {
		this.nombre = nombre;
	}

	public Pelicula agregarActor(final Actor actor) {
		this.getActores().add(actor);
		return this;
	}

	public List<Actor> getActores() {
		return actores;
	}

	public Director getDirector() {
		return director;
	}

	public String getNombre() {
		return nombre;
	}

	// @PreLoad
	// public void preLoad(final DBObject obj) {
	// final DBRef directorDB = (DBRef) obj.get("director");
	// new BasicHome<Director>(Director.class).obtener(directorDB.getDB()
	// .getName());
	// System.out.println(directorDB);
	// }

	public void setActores(final List<Actor> actores) {
		this.actores = actores;
	}

	public void setDirector(final Director director) {
		this.director = director;
	}

	public void setNombre(final String nombre) {
		this.nombre = nombre;
	}
}
